package com.papercutting.platform.service;

import com.papercutting.platform.entity.UserLike;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;

/**
 * 用户点赞服务接口
 */
public interface UserLikeService {
    
    /**
     * 保存点赞记录
     */
    UserLike save(UserLike userLike);
    
    /**
     * 根据ID查找点赞记录
     */
    UserLike findById(Long id);
    
    /**
     * 查找所有点赞记录
     */
    List<UserLike> findAll();
    
    /**
     * 分页查找点赞记录
     */
    Page<UserLike> findAll(Pageable pageable);
    
    /**
     * 根据ID删除点赞记录
     */
    void deleteById(Long id);
    
    /**
     * 根据用户ID查找点赞记录
     */
    List<UserLike> findByUserId(Long userId);
    
    /**
     * 根据目标类型和目标ID查找点赞记录
     */
    List<UserLike> findByTargetTypeAndTargetId(String targetType, Long targetId);
    
    /**
     * 根据用户ID、目标类型和目标ID查找点赞记录
     */
    UserLike findByUserIdAndTargetTypeAndTargetId(Long userId, String targetType, Long targetId);
    
    /**
     * 根据用户ID和目标类型查找点赞记录
     */
    List<UserLike> findByUserIdAndTargetType(Long userId, String targetType);
    
    /**
     * 切换点赞状态
     */
    boolean toggleLike(Long userId, String targetType, Long targetId);
}